Data storage systems are arrangements of hardware and software that typically include multiple storage processors coupled to arrays of non-volatile data storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives. The storage processors service host I/O operations received from host machines. The received I/O operations specify storage objects (e.g. logical disks or “LUNs”) that are to be written, read, created, or deleted. The storage processors run software that manages incoming I/O operations and that performs various data processing tasks to organize and secure the host data received from the host machines and stored on the non-volatile data storage devices.
Some existing data storage systems have supported RAID (Redundant Array of Independent Disks) technology. As it is generally known, RAID is a data storage virtualization/protection technology that combines multiple physical drives (a RAID “group”) into a single logical unit to provide data redundancy and/or performance improvement. Data may be distributed across drives in one of several ways, referred to as RAID levels, depending on the required levels of redundancy and performance. Some RAID levels employ data striping (“striping”) to improve performance. In general, striping involves segmenting logically sequential data, and then storing logically consecutive segments on different drives. By spreading data segments across multiple drives that can be accessed concurrently, total data throughput can be increased. RAID-0 is a RAID level that provides improved performance by striping data across multiple drives.
Data mirroring (“mirroring”) is a technique employed by some RAID levels to provide data protection. In data mirroring, data is written identically to at least two drives, thereby producing a “mirrored set” of drives. The data stored on a mirrored set of drives is protected from loss as long as at least one drive in the set is functioning. RAID-1 is a RAID level that provides data protection by way of mirroring.